package day17.myenum;

/**
 * @author Xiao
 * @date 2021/8/12
 */
public class EnumDemo02 {
    /**
     * 枚举的特点
     * 	所有枚举类都是Enum的子类
     * 	我们可以通过"枚举类名.枚举项名称"去访问指定的枚举项
     * 	每一个枚举项其实就是该枚举的一个对象
     * 	枚举也是一个类，也可以去定义成员变量
     * 	枚举类的第一行上必须是枚举项，最后一个枚举项后的分号是可以省略的，但是如果枚举类有其他的东西，这个分号就不能省略。建议不要省略
     * 	枚举类可以有构造器，但必须是private的，它默认的也是private的。枚举项的用法比较特殊：枚举("")
     * 	枚举类也可以有抽象方法，但是枚举项必须重写该方法
     */
    public static void main(String[] args) {
//        我们可以通过"枚举类名.枚举项名称"去访问指定的枚举项
        System.out.println(SeasonDemo02.SPRING);
//        每一个枚举项其实就是该枚举的一个对象
        SeasonDemo02 spring = SeasonDemo02.SUMMER;

    }
}
enum SeasonDemo02 {
    //    枚举项的用法比较特殊：枚举("")
    SPRING("春"){
        //        枚举类也可以有抽象方法，但是枚举项必须重写该方法
        @Override
        public void show() {
            System.out.println("春");
        }
    }, SUMMER("夏"){
        @Override
        public void show() {
            System.out.println("夏");
        }
    }, AUTUMN("秋"){
        @Override
        public void show() {
            System.out.println("秋");
        }
    }, WINTER("冬"){
        @Override
        public void show() {
            System.out.println("冬");
        }
    };
    //    枚举也是一个类，也可以去定义成员变量
    private String name;

    //    枚举类可以有构造器，但必须是private的，它默认的也是private的。
    /*SeasonDemo02() {
    }*/

    SeasonDemo02(String name) {
        this.name = name;
    }

    public abstract void show();
}
